package com.restcloud.pojo.MedicalRecordSummary;

import com.restcloud.pojo.PersonalInformation.PatientPerson;
import com.restcloud.pojo.PersonalInformation.Receiver;
import com.restcloud.pojo.Public.*;
import lombok.Data;

import javax.xml.bind.annotation.*;
import java.io.Serializable;
import java.util.List;

@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class MRSDevice implements Serializable {

    public MRSDevice() {
    }

    public MRSDevice(String classCode) {
        this.classCode = classCode;
    }

    public MRSDevice(String classCode, String determinerCode) {
        this.classCode = classCode;
        this.determinerCode = determinerCode;
    }

    @XmlAttribute(name = "classCode")
    private String classCode;

    @XmlAttribute(name = "determinerCode")
    private String determinerCode;

    @XmlAttribute(name = "moodCode")
    private String moodCode;

    @XmlElement(name = "code")
    private Code code;

    @XmlElement(name = "value")
    private Code value;

    @XmlElement(name = "value")
    private Text valueText;

    @XmlElement(name = "id")
    private Id id;

    @XmlElement(name = "name")
    private String name;

    @XmlElement(name = "versionNumber")
    private String versionNumber;

    @XmlElement(name = "birthTime")
    private Value birthTime;

    @XmlElement(name = "administrativeGenderCode")
    private Code administrativeGenderCode;

    @XmlElement(name = "maritalStatusCode")
    private Code maritalStatusCode;

    @XmlElement(name = "ethnicGroupCode")
    private Code ethnicGroupCode;

    @XmlElement(name = "ethnicGroupCode")
    private Addr employerOrganization;

    @XmlElement(name = "occupation")
    private Addr occupation;

    @XmlElement(name = "addr")
    private Addr addr;

    @XmlElement(name = "telecom")
    private Value telecom;

    @XmlElement(name = "patient")
    private MRSDevice patient;

    @XmlElement(name = "statusCode")
    private Value statusCode;

    @XmlElementWrapper(name = "assignedPerson")
    @XmlElement(name = "name")
    private List<String> assignedPerson;

    @XmlElement(name = "representedOrganization")
    private MRSDevice representedOrganization;

    @XmlElement(name = "representedCustodianOrganization")
    private MRSDevice representedCustodianOrganization;

    @XmlElement(name = "associatedPerson")
    private MRSDevice associatedPerson;

    private List<MRSReceiver> component;

    private List<MRSReceiver> entryRelationship;
}
